package com.lvtulife.paas.gtd.service;

import com.lvtulife.common.bean.DelVo;
import com.lvtulife.common.component.easyui.Tree;
import com.lvtulife.common.service.BaseServiceI;
import com.lvtulife.paas.gtd.bean.AimBranchVo;
import com.lvtulife.paas.gtd.entity.GtdAimBranch;

import java.util.List;

/**
 * GtdAimBranch 表数据服务层接口
 */
public interface GtdAimBranchServiceI extends BaseServiceI<GtdAimBranch> {

    /**
     * 保存分支目标
     *
     * @param vo
     * @return
     */
    Long saveBranchAim(AimBranchVo vo);

    /**
     * 设置上级分支目标
     *
     * @param id
     * @param parentId
     */
    void setParentBranchAim(Long id, Long parentId);

    /**
     * 分支目标排序
     *
     * @param id
     * @param sort
     */
    void sortBranchAim(Long id, Integer sort);

    /**
     * 删除分支目标
     *
     * @param vo
     */
    void delBranchAim(DelVo vo);


    /**
     * 查询子类分支目标
     *
     * @param pid
     * @return
     */
    List<AimBranchVo> findSonBranchAims(Long pid);

    /**
     * 查询目标类别下的分支目标
     *
     * @param userId
     * @param typeId
     * @return
     */
    List<AimBranchVo> findTypeBranchAims(Long userId, Long typeId);


    /**
     * 模糊查询分支目标
     *
     * @param userId
     * @param likeStr
     * @return
     */
    List<AimBranchVo> findLikeBranchAims(Long userId, String likeStr);

    /**
     * 获取分支目标
     *
     * @param id
     * @return
     */
    AimBranchVo getBranchAim(Long id);

    /**
     * 获取分支目标,包含子项
     *
     * @param id
     * @return
     */
    List<AimBranchVo> getFullBranchAims(Long id);

    /**
     * 获取分支目标树
     *
     * @param id
     * @return
     */
    Tree getTreeBranchAims(Long id);
}